import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    /*给你一个正整数数组 nums ，请你从中删除一个含有 若干不同元素 的子数组。删除子数组的 得分 就是子数组各元素之 和 。
    返回 只删除一个 子数组可获得的 最大得分 。
    如果数组 b 是数组 a 的一个连续子序列，即如果它等于 a[l],a[l+1],...,a[r] ，那么它就是 a 的一个子数组。*/
    //查找最大不同元素子数组求和输出
    //哈希表法
   /* public static int seekcoordinate(int[] nums) {
        int n=nums.length;
        Set<Integer> set=new HashSet<>();
        int left=0;
        int result=Integer.MIN_VALUE;
        int sum=0;
        for(int right=0;right<n;right++){
            int temp=nums[right];
            sum+=temp;
            while(set.contains(temp)){
                int temp1=nums[left];
                sum-=temp1;
                set.remove(temp1);
                left++;
            }
            set.add(temp);
            result=Math.max(result,sum);
        }
        return result;
    }*/

    public static int seekcoordinate(int[] nums) {
        //一维数组法
        int n=nums.length;
        int[] arr=new int[100001];
        int left=0;
        int result=0;
        int sum=0;
        for(int i=0;i<n;i++){
            arr[nums[i]]++;
            sum+=nums[i];
            while(arr[nums[i]]>1){
                int temp=nums[left];
                sum-=temp;
                arr[nums[left]]--;
                left++;
            }
            result=Math.max(result,sum);
        }
        return result;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int[] nums=new int[n];
        for(int i=0;i<n;i++){
            nums[i]=sc.nextInt();
        }
        int score=seekcoordinate(nums);
        System.out.println(score);
        sc.close();
    }
}